关于Eureka
其实Eureka从2.0版本以上已经不再开源了,但是为什么还是要写Eureka呢。其实服务治理的核心就那么几点(具体后面会说:),而且Eureka只要不使用2.0版本以上的分支,完全没有关系,会使用了Eureka,换其他的其实也是差不多的。
一个例子🌰告诉你为啥需要服务治理
微服务的理念相信大家也知道,就是把服务(生产者)尽可能的拆分,客户(消费者)需要哪个服务就调用哪个服务。这样方便对一些需要做集群的服务做集群,并且一个服务挂了,也不会导致其他服务挂掉。
那么这样就会导致一个问题:作为一个客户,我怎么知道去哪里调用(消费)服务呢?
下面举个例子虽然说的不太恰当,但是大家意会一下就好:
学校里有很多学生和老师,学生需要学习知识,老师需要教授知识。那么把我们的应用,实际上就可以看成学校,而学校的老师就是服务的生产者,学生则是消费者。
简单点来说,一个学生,他需要学习的内容,可能有语文、数学、英语,各种需求。而老师不是万能的,就像你不能让体育老师来教你数学一样,那么老师就是一个个服务,有专门教语文的语文老师,提供给你教语文的服务,数学老师提供给你教数学的服务…
起初只有语文、数学、英语三个科目,没多少学生的时候是没什么问题的。学生只要记住某个老师教什么,有问题直接找他们就OK了。简化成伪代码就像这样。
1 |
|
其实这样就完成了最最最简化的一个微服务,当学生(消费者)需要问问题(消费)的时候,他就到QuestionController里面,找到对应的方法,而学生这个时候能记得住各个老师(生产者)是谁,所以他们只要直接问问题(调用服务)就OK了。
那么问题来了,如果换做是一个大学呢。学科分支那么多的情况下,学生、老师也特别多的情况下,没有办法硬性规定学生必须记住每个老师的名字、科目、办公室。这个时候咋办,教务主任就出现了,他想了个办法,每个学生入学的时候,都给他们一个手册,这个手册里面记录了,每个老师什么名字、教什么、办公室在哪。学生只要想问问题,就查一查手册,直接过去就好了。然后有新老师来学校入职,就过来给教务主任报道,他叫什么名字、教什么、办公室在哪,然后教务主任更新手册,以便学生们知道哪个老师已经离职了,后面没法找他问问题了,新来的老师可以问什么问题。
简而言之,成立了一个消费者和生产者中间用于沟通的注册中心,而Eureka就是这样的一个角色。(下图中,注册中心,就是Eureka的角色)
怎么使用Eureka
Eureka实际上分为两部分,一个是服务端,一个是客户端,那么其实也很清楚了,服务端就是注册中心,而客户端就是消费者或者生产者。没有服务,也就不存在客户,所以肯定是要先搭建服务端。
服务端搭建
引入pom文件
1 | <dependency> |